#pragma once
#include "../Utils/PlatTypeUtil.h"
#include <vector>
#include <wtypes.h>
#include "../Misc/Timer.h"
#include "Scene/Entity.h"

class GameState
{
public:

	GameState();

	~GameState();

	void Init();

	void WaitForRender();

	void MainLoop();

	void NextFrame();

	void Stop();

	void Exit();

public:

	uint32 GetFrameIndex() const;

	uint32 GetFrameCount() const;

	uint64 GetFrameAmount() const;

	HANDLE GetFrameEvent(uint32 index);

	GameScene* GetGameScene() const;

public:

	uint32 mFrameIndex;

	uint32 mFrameCount;

	std::vector<HANDLE> mFrameEvents;

	uint64 mFrameAmount;

	Timer mGameTimer;

	GameScene* mGameScene;
};